/*----------------------------------------------------------------------------
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the 
License at http://www.mozilla.org/MPL/
	
Software distributed under the License is distributed on 
an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, 
either express or implied. 
See the License for the specific language governing rights and 
limitations under the License.
	
The Original Code is Fever RS ( ActionScript 3 ) Framework code.
	
The Initial Developer of the Original Code is Romain Ecarnot.
Portions created by Initial Developer are Copyright (C) 2006
the Initial Developer. All Rights Reserved.
	
Contributor(s):
	
Unless required by applicable law or agreed to in writing, 
software distributed under the License is distributed on 
an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
OF ANY KIND, either express or implied.
See the License for the specific language governing permissions 
and limitations under the License.
----------------------------------------------------------------------------*/

package fever.transitions 
{
	import com.bourre.transitions.Tween;		
	/**
	 * Behaviour for tween engine strategy.
	 * 
	 * @see fever.transitions.TweenEgnine
	 * @see fever.transitions.strategy.FPSTweenStrategy FPS Metronome strategy
	 * @see fever.transitions.strategy.MSTweenStrategy MS Metronome strategy
	 * @see fever.transitions.strategy.RTTweenStrategy RT Metronome strategy	 * 
	 * @author Romain Ecarnot
	 */
	public interface TweenStrategy 
	{
		/**
		 * Creates and returns basic tween using defined stategy.
		 * 
		 * @param target Object which the Tween targets.
		 * @param setter Setter
		 * @param end Ending value of property.
		 * @param duration Length of time of the motion in milliseconds.
		 * @param start Starting value of property.
		 * @param easing Easing function.		 * @param getter Getter
		 */
		function createBasicTween(
			target : Object, 
			setter : String, 
			end : Number, 
			duration : Number, 
			start : Number = NaN, 
			easing : Function = null, 
			getter : String = null ) : Tween
		
		/**
		 * Creates and returns multi tween using defined stategy.
		 * 
		 * @param target Object which the Tween targets.
		 * @param setter Setter list
		 * @param end Ending values list
		 * @param duration Length of time of the motion in milliseconds.
		 * @param start Starting values list
		 * @param easing Easing function.
		 * @param getter Getter list
		 */
		function createMultiTween( 
			target : Object, 
			setters : Array, 
			ends : Array, 
			duration : Number, 
			starts : Array = null, 
			easing : Function = null, 
			getters : Array = null ) : Tween
			
		/**
		 * Returns string representation.
		 */
		function toString() : String
	}
}
